哲学注记
一个程序设计语言要服务于两个相互关联的目的:它要为程序员提供一种描述所需执行的动作的载体;还要为程序员提供一组概念,使她们能利用这些概念去思考什么东西是能够做的。在理想的情况下,第一个用途要求一种“尽可能接近机器的“语言,以使机器的所有重要方面,都能以一种对程序员相当明显的方式简单而有效地加以处理。C语言的基本设计就是基于这一观点。而第二个用途所要求的理想语言是“尽可能接近需要解决的问题”,这样才能使解决方案中的概念能够直接而紧凑地表达出来。被加入C语言,从而塑造出C++的那些概念,从根本上说,就是基于这个观点设计的。
在我们思考/编程所用的语言和我们能够设想的问题与解之间的联系非常紧密。正是由于这个因素,以避免程序员犯错误为目的而对语言的特征加以限制,这一做法至少也是很危险的。就像自然语言中的情况,掌握至少两种语言就非常有价值。一个语言为程序员提供了一组概念工具;如果它们不适合于某件工作,程序员将简单地放弃这个语言。好的设计和不出现错误都不能仅由某些语言特征的存在或者不存在来保证。
类型系统对于各种各样非平凡的工作都特别有帮助。事实上,C++的类概念已经被证明是一种极为强有力的概念工具。
🔚